UnityのコードをSublimeTextで編集するAsset、販売中
概要
身内間でのみ出してたやつ、やっとUnityのAssetStoreに出せた(SublimeSocketAsset)ので、
その他のものと合わせて、SublimeTextでUnity、こんなに便利なんですよ!! 的なまとめを作ることにした。
機能的に「この機能は、ここに載ってないこの機構でもできるよ!」ってのは有ると思うんだけど、
独断と偏見で比べて、まだマシなほうを残していたりする。
判断基準は
・疎結合かどうか。強烈なパス依存とかがあるとドン引き。
・非同期かどうか。コンパイルの度にプチフリするIDEとかつらい。
あとショートカットはMac用で書いてある。
STにUnity C#のシンタックスハイライトを導入
C#で書いていても、Unity用のキーワードとか基底クラスを特別扱いしたい。
専用のシンタックスハイライトがあって便利。
Package Controlから入れると楽。
Command Palette -> package Control: Install Package -> Unity3D
UnityのAPIから補完
Unity C# Snippets
Command Palette -> package Control: Install Package -> Unity C# Snippets
時々、APIの情報が古いのか、パラメータの型情報が誤ったやつを出してくるのがあるけど、えらい捗る。
キーボードショートカットでコメントアウト/イン
コメントアウト&インを、command + / などのショートカットからなんとかしたくなるのが人情。
http://www.holoville.com/blog/?p=512
っていうかC#もできないので、そういう文化がない言語なんだな。
MonoDevelopにも無い。
いや良いけど。できるようになるので便利。
エラーとかの行をUnityコンソールからSublimeTextで開く
Unity editorでコンソールを表示した際、エラー内容をダブルクリックで対象の行に
フォーカスした状態でファイルを開く。
http://www.jacobpennock.com/Blog/?p=568
UnityHelperの話も出てるんだけど、個人的にはDashのほうが好き。
今後SublimeSocketAssetに積もうかなーと考えている。
STからUnityのドキュメントを開く
Dashと、
https://itunes.apple.com/jp/app/dash-docs-snippets/id458034879?mt=12
STからDashを起動するプラグイン
Command Palette -> package Control: Install Package -> DashDoc
の組み合わせが、異常に強力。
STでコードを書いている途中、補完が出力したAPIを選択した状態で
Command Palette -> DashDoc: invoke Dash with selected word(syntax-sensitive)
or
control + alt + h
STのシンタックスハイライトを見て、何が見たいか絞ってくれるので良い。
~ここからSublimeSocketAssetの独壇場~
SublimeSocketAsset
https://www.assetstore.unity3d.com/#/content/8003
STからUnityのコンパイルを行う
SublimeTextのビルドシステムを使ったものも有ったんだけど、Unityのパスを手で入れなければならず、
密結合で面倒だったので、SublimeSocketAssetで疎結合にした。
既存リリースの1.3.xだとインストール手順が2段階あって煩雑だが、
申請済みの1.4.x系が通れば、楽になる、、と思う。少しは。
FAQに書いてしまっているレベル。
https://github.com/sassembla/SublimeSocketAsset-support
編集→保存→コンパイル、が非同期にできる。
コンパイルにはUnity自体を使用しているので、Unityでのちゃんとしたビルド結果を取得する事が出来る。
Unityから開いたファイル以外でもコンパイルターゲットにできる。
つまりUnityのファイル監視機構に依存していない。
この辺の手法は、過去の記事とかを見ると何したか察しがつくと思う。
Unityにスクリプトのコンパイルを依頼するためにどう土下座すれば
http://sassembla.github.io/Public/2013:03:17%2013-53-03/2013:03:17%2013-53-03.html
ST上にUnityのコンパイルエラーを出す
無かったので作った。下記エラーやWarningが発生した際、ST上にライブで表示される。
一部、SublimeSocketAsset 1.4.xから対応が増えるかもしれない。
対応しているエラーを無理矢理発生させたのが下の写真。
各行左の丸いのをクリックすると詳細がST上とMacのNotificationに表示される。
対応エラー一覧
Exception一般
以下に含まれないエラー一般。
Warning一般
unusedとか。
NullReferenceException
ぬるぽ。 ガッされてしまえ。
ArgumentException
いつ発生するのか忘れた。
You are trying to create a MonoBehaviour using the 'new' keyword.
MonoBehaviourなものを知らずnewしてると出る。実行時に検出される。エラーではないので止まりはしないが、コード上に表示されるようにした。
transform.position assign attempt for ~
Nullな要素のVector3をTransform.positionとかに代入しようとすると出るエラー。式算出とかだと出くわす。
UnityException
いつ発生するのか忘れた。
IndexOutOfRangeException
読んで字のごとく。
InvalidOperationException
いつ発生するのか忘れた。
特筆すべきは、NullなVectorをtransformに対してセットしてしまった時のレアーーーなエラーとか、UnityExceptionが実行時にコード上に直に表示されるところ。
捗るぞ。
ちなみにError/Warning表示はSublimeText自体のログにも出る。
InvalidOperationとかいつ出たんだか、、、本当に忘れた。
ほかにもエラーが有ったら教えてほしく。
これらのエラーは検出機構からして1ファイルで設定/拡張可能にしてあるので、自前でエラーを定義してアクションを追加したりできる。
ST上にUnityの動作中のパラメータを出す
無かったので作った。
特定のDebug.Log形式でパラメータをST上に表示できる。
複雑な条件の中に入ったかどうかとか、ログに特徴的な事を書いてUnityのコンソールから探す、とかするのシンドイので、通ったところが光るのが重宝する。
Debug.Logの中身をL: から始めるだけ。
今後のやる気
独自型の補完を出す
1.5.xには入れられると思う。
エラーのQuickFixを出す
ST3から導入できる。強力。
Windows版
ST3の正式版が出たら、Windows版に対応。
でもWinの人はVS使えば良いと思うが。
STからのUnity editor Play
やりたい。
次のエラー行へのジャンプ
いちいちUnityのコンソールを経由するのが面倒なので、
キーバインドかなにかで次のエラーがあるファイル/行を表示するとかしたい。
コード上への負荷表示
コード間の時間的負荷を、コード上に表示したい。
ST上への全値のフィルタ表示
全値に対して、Debug.Log("L:") を仕込まないでもできる、、かもしれない。実験中。
などなど。リクエスト有れば聞くだけ聞きたいです。
そんなわけで、宣伝だった。